#define _CRT_SECURE_NO_WARNINGS
#include <vector>
#include <queue>
using namespace std;

struct TreeNode 
{
    int val;
    TreeNode* left;
    TreeNode* right;
     TreeNode()
         : val(0)
         , left(nullptr)
         , right(nullptr) 
     {}
      TreeNode(int x)
          : val(x)
          , left(nullptr)
          , right(nullptr) 
      {}
      TreeNode(int x, TreeNode *left, TreeNode *right)
          : val(x)
          , left(left)
          , right(right) 
      {}
  };

//class Solution {
//public:
//    vector<vector<int>> levelOrder(TreeNode* root) {
//        queue<int> iq;
//        queue<TreeNode*> q;
//        vector<vector<int>> vv;
//        if (root == nullptr)
//        {
//            return vv;
//        }
//        q.push(root);
//        iq.push(0);
//        while (!q.empty())
//        {
//            int i = iq.front();
//            vector<int> v;
//            while (i == iq.front())
//            {
//                TreeNode* r = q.front();
//                i = iq.front();
//                q.pop();
//                iq.pop();
//                v.push_back(r->val);
//                if (r->left)
//                {
//                    q.push(r->left);
//                    iq.push(i + 1);
//                }
//                if (r->right)
//                {
//                    q.push(r->right);
//                    iq.push(i + 1);
//                }
//            }
//            vv.push_back(v);
//        }
//        return vv;
//    }
//};
 
class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> vv;
        queue<TreeNode*> q;
        if (root == nullptr)
        {
            return vv;
        }
        q.push(root);
        while (!q.empty())
        {
            size_t size = q.size();
            vector<int> v;
            while (size--)
            {
                TreeNode* r = q.front();
                q.pop();
                v.push_back(r->val);
                if (r->left)
                {
                    q.push(r->left);
                }
                if (r->right)
                {
                    q.push(r->right);
                }
            }
            vv.push_back(v);
        }
        return vv;
    }
};
int main()
{

    return 0;
}